package interfaces;

import Pointers.JPointerFactory.PointerType;
import Script.Offset;

public interface PointerFactory {
	
	/**
	 * Creates new pointer, using the type specified by the
	 * factory.
	 * 
	 * @param position Location compared to other pointers.
	 * @param offset Offset this pointer points to.
	 * @param fileOffset Offset location in file.
	 * @return Instantiated pointer object.
	 */
	public Pointer newPointer(int position, Offset offset, Offset fileOffset);
	
	/**
	 * Sets a new pointer type in the factory.
	 * @param type Type of pointer to build using the factory.
	 */
	public void setType(PointerType type);
	
	/**
	 * Returns the size of the currently set pointer type.
	 * @return Pointer size in bytes.
	 */
	public int pointerSize();
}
